#!/usr/bin/env bash
# ----------------------------------------------------------------------
# Filename	:  06-ftpci_id.sh
# Version	:  2.0
# Date		:  2024/09/18
# Author	:  yaoxiyao
# Email		:  yaoxiyao@kylinsec.com.cn
# History	:
#
# Function	:  增加飞腾pci设备厂商id
# Out		:
#              0 => TPASS
#              1 => TFAIL
#              other=> TCONF
# ----------------------------------------------------------------------

# 测试主题
Title_Env_LTFLIB="增加飞腾pci设备厂商id"

## TODO : 个性化,初始化
#   Out : 0=>TPASS
#         1=>TFAIL
#         2=>TCONF
TestInit_LTFLIB() {
    return $TPASS
}

## TODO : 清理函数
#   Out : 0=>TPASS
#         1=>TFAIL
#         2=>TCONF
TestClean_LTFLIB() {
    return $TPASS
}

## TODO : 测试用例集
#   Out : 0=>TPASS
#         1=>TFAIL
#         2=>TCONF
Testsuite_LTFLIB() {
    testcase_1
    return $TPASS
}

## TODO ： 增加飞腾pci设备厂商id
#
testcase_1() {
    local lspci_output=$(lspci)
    local lspci_n_output=$(lspci -n)
    # 将输出按行分割成数组
    IFS=$'\n' read -rd '' -a lspci_lines <<<"$lspci_output"
    IFS=$'\n' read -rd '' -a lspci_n_lines <<<"$lspci_n_output"

    # 确保lspci和lspci -n的行数相同
    if [ ${#lspci_lines[@]} -ne ${#lspci_n_lines[@]} ]; then
        OutputRet_LTFLIB "${TFAIL}"
        TestRetParse_LTFLIB "lspci和lspci -n的行数不相同"
    else
        OutputRet_LTFLIB "${TPASS}"
        TestRetParse_LTFLIB "lspci和lspci -n的行数相同"
    fi
    for ((i = 0; i < ${#lspci_lines[@]}; i++)); do
        # 提取lspci输出中的第一列
        local lspci_fields=(${lspci_lines[$i]})
        local lspci_pci_address="${lspci_fields[0]}"
        # 提取lspci -n输出中的第一列
        local lspci_n_fields=(${lspci_n_lines[$i]})
        local lspci_n_pci_address="${lspci_n_fields[0]}"

        local suc=0
        # 比较前两个字段：PCI 地址
        if [ "${lspci_pci_address}" == "${lspci_n_pci_address}" ]; then
            suc=0
        else
            suc=1
            OutputRet_LTFLIB "${TFAIL}"
            TestRetParse_LTFLIB "飞腾pci设备厂商id存在不相同的项，lspci: ${lspci_pci_address}，lspci -n: ${lspci_n_pci_address}"
        fi
    done
    if [ "${suc}" -ne 1 ]; then
        OutputRet_LTFLIB "${TPASS}"
        TestRetParse_LTFLIB "飞腾pci设备厂商id没有不相同的项"
    fi
}

#----------------------------------------------#

source "${LIB_LTFLIB}"
Main_LTFLIB $@
